<?php

class Admin_PozicePresenter extends BasePresenter
{	
	public function renderDefault()
	{
		$pozice = new PoziceModel();
		$this->template->pozice = $pozice->findAll();

	}
	
	public function renderNovy()
	{
		$form = $this['poziceForm'];
	}
	
	public function renderUpravit($id = 0)
	{
		$form = $this['poziceForm'];
		if (!$form->isSubmitted()) {
			$pozice = new PoziceModel();
			$row = $pozice->findById($id)->fetch();
			if (!$row) {
				throw new NBadRequestException('Záznam nebyl nalezen.');
			}
			$form->setDefaults($row);
		}
	}
	
	
	public function renderSmazat($id = 0)
	{
		$pozice = new PoziceModel();
		$this->template->pozice = $pozice->findById($id)->fetch();
		if (!$this->template->pozice) {
			throw new NBadRequestException('Pozice nebyla nalezena');
		}
	}
	
	protected function createComponentSmazatForm()
	{
		$form = new NAppForm;
		
		$form->addSubmit('delete', 'Smazat')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět');
		$form->onSubmit[] = callback($this, 'smazatFormSubmitted');
		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		return $form;
	}
	
	public function smazatFormSubmitted(NAppForm $form)
	{
		if ($form['delete']->isSubmittedBy()) {
			$pozice = new PoziceModel();
			$pozice->delete($this->getParam('id'));
			$this->flashMessage('Pozice byla odstraněna.');
		}

		$this->redirect('default');
	}
	
	protected function createComponentPoziceForm()
	{
		$form = new NAppForm;
		$form->addText('nazev', 'Název pozice:');
	
		$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět')->getControlPrototype()->class('cancel')->setValidationScope(NULL);
		$form->onSubmit[] = callback($this, 'poziceFormSubmitted');

		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	public function poziceFormSubmitted(NAppForm $form)
	{
		if ($form['save']->isSubmittedBy()) {
			$id = (int) $this->getParam('id');
			$pozice = new PoziceModel();
			if ($id > 0) {
				$pozice->update($id, $form->getValues());
				$this->flashMessage('Pozice byla upravena.');
			} else {
				
				$pozice->insert($form->getValues());
				
				$this->flashMessage('Pozice byla vytvořena.');
			}
		}

		$this->redirect('default');
	}

}

